#!/usr/bin/env python
# -*- coding:utf-8 -*-

# file:do_pymysql.py
# author:Jackiex
# datetime:2023/5/15 11:18
# software: PyCharm

"""
 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库，Python2中则使用mysqldb。
 PyMySQL 遵循 Python 数据库 API v2.0 规范，并包含了 pure-Python MySQL 客户端库。
 pip install PyMySQL
"""

import pymysql

# # 打开数据库连接
# db = pymysql.connect("39.107.96.222","test","123456","BBSDemo")  # python3.7可以这么写
# db = pymysql.connect(
#     host="127.0.0.1",
#     user="test",
#     password="123456",
#     database="sct_study"
# )
#
# # # 使用 cursor() 方法创建一个游标对象 cursor
# cursor = db.cursor()
#
# # # 使用 execute()  方法执行 SQL 查询
# cursor.execute("SELECT VERSION()")
#
# # # 使用 fetchone() 方法获取单条数据.
# data = cursor.fetchone()
#
# print ("Database version : %s " % data)
#
# # # 关闭数据库连接
# db.close()

'''
---------规范写法，增加数据库操作的异常处理；注意，所有的操作都可能会失败--------
'''

import pymysql

# 创建数据库连接
db = pymysql.connect(
    host="127.0.0.1",
    user="test",
    password="123456",
    database="BBSDemo"
)

# 使用cursor()方法获取操作游标
cursor = db.cursor()

# SQL 插入语句
sql = """INSERT INTO test_user(id,name)
         VALUES ('3','cynthia')"""

try:
    # 执行sql语句
    cursor.execute(sql)
    # 提交到数据库执行
    db.commit()
except Exception as e:
    # pass
    # 异常信息的处理：1直接抛出；2 打印提示输出
    raise e
    print("发生异常", e)
    输出异常信息
    traceback.print_exc()
    # 3 将错误日志输入到目录文件
    f = open("log.txt", "a")
    traceback.print_exc(file=f)
    f.flush()
    f.close()
    # 如果发生错误则回滚
    db.rollback()

finally:
    # 关闭数据库连接
    db.close()
